package cn.kgc.shiro;


import cn.hutool.core.util.RandomUtil;
import org.apache.shiro.crypto.hash.SimpleHash;

/*
*    shiro框架的加密方案
*    密码   在数据存储时 需要进行加密处理 提升账户的安全性    MD5   摘要算法  不可逆
*    1.  密码   摘要     123456
*    2.  密码 + salt         hello  123456+hello
*    3.  密码 + random salt    123456+ hello    123456+ word  mysql
*    4.  密码 + random salt + multi hash
*
* */
public class App {

    public static void main(String[] args) {

        String defaultPassword = "123456";
        // shiro  密码的加密  e10adc3949ba59abbe56e057f20f883e
        String hex = new SimpleHash("MD5", defaultPassword).toHex();
        System.out.println("hex = " + hex);

        // salt  eeb9bad681184779aa6570e402d6ef6c
        String hex1 = new SimpleHash("MD5", defaultPassword, "hello").toHex();
        System.out.println("hex1 = " + hex1);

        //  随机生成字符串   08b613747fb582aa2cc3a88aed8bca87       123456   dbr5r3h2
        String salt = RandomUtil.randomString(8);
        System.out.println("s = " + salt);

        String hex2 = new SimpleHash("MD5", defaultPassword, salt).toHex();
        System.out.println("hex2 = " + hex2);


        //  多次hash算法  2d215297cf2a75d4211cebca82c6ae9c
        String hex3 = new SimpleHash("MD5", defaultPassword, salt, 10).toHex();
        System.out.println("hex3 = " + hex3);


    }
}
